using System.Collections.Generic;
using Utils;

namespace Game.UI {
	public interface IComputingUnitUserDataProvider {
		public EventBus OnCodeFileListUpdated { get; }
		public EventBus OnUnitStateChanged { get; }
		public EventBus<uint> OnAttachedEntityIdChanged { get; }
		public EventBus<string> OnCodeFileUpdated { get; }

		public EventBus OnTerminalCommandReceived { get; }
		public string GetFileContents(string fileName);

		public List<string> GetCodeFiles();
		public bool IsCodeFileDownloaded(string fileName);

		public void SendRecompileRequest();

		public void SaveCodeFile(string fileName, string contents);

		public void SaveCodeFileLocally(string fileName, string contents);

		public void CreateNewCodeFile(string fileName, string contents);

		public void TryDownloadCodeFile(string fileName);

		public ComputingUnitState GetCurrentUnitState();

		public void SendTerminalMessage(string message);

		public List<string> GetTerminalMessages();

		public uint GetAttachedEntityId();

		public ShipCore GetAttachedEntity();

		public void TryRemoveFile(string fileName);
		void UploadFiles();
		void DownloadFiles();
	}
}